package Java2Test.mythread.waitandnotify;

public class Cook extends Thread {
    @Override
    public void run() {
        while (true) {
            synchronized (Desk.lock) {
                // 总资源检查：决定是否继续制作
                if (Desk.count == 0) {
                    break; // 所有面条已做完，退出循环
                } else {
                    // 状态标志检查：决定当前是否可以制作
                    if (Desk.foodFlag == 1) {
                        try {
                            // 已有面条时，当前线程释放锁并进入等待队列
                            // 等待吃货线程消费面条后唤醒
                            Desk.lock.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    } else {
                        // 执行制作操作
                        System.out.println("厨师正在做面条");
                        Desk.foodFlag = 1; // 设置状态标志，表示已有面条

                        // 关键同步点：唤醒可能在等待的吃货线程
                        // 注意：使用notifyAll()而非notify()，可能唤醒其他厨师线程（如果存在多个）
                        Desk.lock.notifyAll();
                    }
                }
            }
        }
    }
}